/****************************************************************
 **  Nombre: DAORelacionesPreguntas.java                          *
 **  Version: 1.0.0                                             *
 **  Diagrama: GAPI v4.6.1                                      *
 **  Autor: Alberto castro                       *
 **  Creado: 07-abril-2013
 *   Caso de uso: MPE2
 **  Modificado:                                                *
 ***************************************************************/

package DAO;

import AccesoBD.AccesoBaseDatos;
import Dominio.PreguntaEDD;
import Dominio.PreguntaEHE;
import Dominio.RelacionRespuestaEHEPreguntaEDD;
import Dominio.RespuestaEHE;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *Clase que controla la base de datos de las preguntas y sus relaciones.
 */
public class DAORelacionesPreguntas {
    
    private final String TABLA_RELACIONES_PREGUNTA = "relaciones_pregunta";
    private final String COLUMNA_CLAVE_PREGUNTA_EHE = "cve_pregunta_ehe";
    private final String COLUMNA_CLAVE_PREGUNTA_EDD = "cve_pregunta_edd";
    private AccesoBaseDatos acceso;
    private Connection conexion;
/**
 * Constructor de la clase.
 */
    public DAORelacionesPreguntas() {
        acceso = new AccesoBaseDatos();
        conexion = acceso.abrirConexion();
    }
/**
 * Cierra la conexion con la base de datos
 */
    public void cerrarConexionARelacionesPreguntas() {
        acceso.cerrarConexion(conexion);
    }
    /**
     * Busca todas las relaciones entre las respuestas de habitos de estudio y las preguntas de desempeño docente.
     * @param nombreUsuario El nombre de usuario del alumno
     * @param listaPreguntasEHE Lista de preguntas de habitos de estudio
     * @return Relaciones entre repsuestas de habitos de estudio y preguntas de desempeño docente.
     */
    public ArrayList<RelacionRespuestaEHEPreguntaEDD> buscarRelacionesRespuestaEHEPreguntaEDD(String nombreUsuario, ArrayList<PreguntaEHE> listaPreguntasEHE) {
        ArrayList<RelacionRespuestaEHEPreguntaEDD> listaRelacionesRespuestaEHEPreguntaEDD = new ArrayList<RelacionRespuestaEHEPreguntaEDD>();
        
        Statement sentencia = acceso.crearSentenciaBD(conexion);

        for(int i = 0; i < listaPreguntasEHE.size(); i++) {
            try {
                PreguntaEHE preguntaEHE = listaPreguntasEHE.get(i);
                int clavePreguntaEHE = preguntaEHE.getClavePregunta();
                
                String querySearch = "SELECT "+COLUMNA_CLAVE_PREGUNTA_EDD+" FROM " + TABLA_RELACIONES_PREGUNTA + "  WHERE "+COLUMNA_CLAVE_PREGUNTA_EHE+" = '"+clavePreguntaEHE+"';";
                ResultSet resultadoBusqueda = sentencia.executeQuery(querySearch);
                
                while(resultadoBusqueda.next()) {
                    int clavePreguntaEDD = resultadoBusqueda.getInt(1);
                    PreguntaEDD preguntaEDD = new PreguntaEDD();
                    preguntaEDD.setClavePregunta(clavePreguntaEDD); 
                    
                    DAORespuestasEHE daoRespuestasEHE = new DAORespuestasEHE();
                    RespuestaEHE respuestaEHE = daoRespuestasEHE.buscarRespuestaEHE(nombreUsuario, preguntaEHE);
                    daoRespuestasEHE.cerrarConexionARespuestasEHE();
                    
                    RelacionRespuestaEHEPreguntaEDD relacionPreguntaEncuesta = new RelacionRespuestaEHEPreguntaEDD();
                    relacionPreguntaEncuesta.setRespuestaEHE(respuestaEHE);
                    relacionPreguntaEncuesta.setPreguntaEDD(preguntaEDD); 
                    
                    listaRelacionesRespuestaEHEPreguntaEDD.add(relacionPreguntaEncuesta); 
                }
                
            } catch (SQLException ex) {
                Logger.getLogger(DAORelacionesPreguntas.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Ocurrio un error al tratar de buscar las claves de preguntas edd");
            }                        
        }
        
        return listaRelacionesRespuestaEHEPreguntaEDD;
    }
}
